[INFO] cloning repository https://github.com/VictorFordham/rust_gb_emulator
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/VictorFordham/rust_gb_emulator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FVictorFordham%2Frust_gb_emulator", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FVictorFordham%2Frust_gb_emulator'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f8ef7774019edd67d0c0c266641ffdcd435c4f26
[INFO] building VictorFordham/rust_gb_emulator against master#881c1ac408d93bb7adaa3a51dabab9266e82eee8 for issue-85264
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FVictorFordham%2Frust_gb_emulator" "/workspace/builds/worker-11/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-11/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/VictorFordham/rust_gb_emulator on toolchain 881c1ac408d93bb7adaa3a51dabab9266e82eee8
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+881c1ac408d93bb7adaa3a51dabab9266e82eee8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/VictorFordham/rust_gb_emulator
[INFO] finished tweaking git repo https://github.com/VictorFordham/rust_gb_emulator
[INFO] tweaked toml for git repo https://github.com/VictorFordham/rust_gb_emulator written to /workspace/builds/worker-11/source/Cargo.toml
[INFO] crate git repo https://github.com/VictorFordham/rust_gb_emulator already has a lockfile, it will not be regenerated
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+881c1ac408d93bb7adaa3a51dabab9266e82eee8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:20528e8c29e4536546f0102ce88568b16ea7538393a33fcca951030f7af10457" "/opt/rustwide/cargo-home/bin/cargo" "+881c1ac408d93bb7adaa3a51dabab9266e82eee8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 845cce4e8433c2d3a16862b75307e0886a243447e1521b184fb5421d426f6b4d
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "845cce4e8433c2d3a16862b75307e0886a243447e1521b184fb5421d426f6b4d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "845cce4e8433c2d3a16862b75307e0886a243447e1521b184fb5421d426f6b4d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "845cce4e8433c2d3a16862b75307e0886a243447e1521b184fb5421d426f6b4d", kill_on_drop: false }`
[INFO] [stdout] 845cce4e8433c2d3a16862b75307e0886a243447e1521b184fb5421d426f6b4d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:20528e8c29e4536546f0102ce88568b16ea7538393a33fcca951030f7af10457" "/opt/rustwide/cargo-home/bin/cargo" "+881c1ac408d93bb7adaa3a51dabab9266e82eee8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 56d6d0baea53ba6956119de36385dbf53b4f8962095ead4c03a666ab4713bca3
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "56d6d0baea53ba6956119de36385dbf53b4f8962095ead4c03a666ab4713bca3", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.88
[INFO] [stderr]    Compiling syn v1.0.62
[INFO] [stderr]    Compiling pollster v0.2.1
[INFO] [stderr]    Compiling fxhash v0.2.1
[INFO] [stderr]    Compiling ash v0.31.0
[INFO] [stderr]    Compiling raw-window-handle v0.3.3
[INFO] [stderr]    Compiling parking_lot_core v0.8.3
[INFO] [stderr]    Compiling x11 v2.18.2
[INFO] [stderr]    Compiling gfx-hal v0.6.0
[INFO] [stderr]    Compiling parking_lot v0.11.1
[INFO] [stderr]    Compiling gfx-memory v0.2.2
[INFO] [stderr]    Compiling gfx-backend-empty v0.6.0
[INFO] [stderr]    Compiling gfx-descriptor v0.2.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.24
[INFO] [stderr]    Compiling futures-macro v0.3.13
[INFO] [stderr]    Compiling futures-util v0.3.13
[INFO] [stderr]    Compiling thiserror v1.0.24
[INFO] [stderr]    Compiling naga v0.2.0
[INFO] [stderr]    Compiling gfx-backend-vulkan v0.6.5
[INFO] [stderr]    Compiling futures-executor v0.3.13
[INFO] [stderr]    Compiling futures v0.3.13
[INFO] [stderr]    Compiling wgpu-core v0.6.5
[INFO] [stderr]    Compiling wgpu v0.6.2
[INFO] [stderr]    Compiling pixels v0.2.0
[INFO] [stderr]    Compiling gb_emulator v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: mismatched closing delimiter: `}`
[INFO] [stdout]     --> src/cpu.rs:1219:9
[INFO] [stdout]      |
[INFO] [stdout] 1214 |         if cpu.f & ZERO_FLAG == ZERO_FLAG {
[INFO] [stdout]      |                                           - closing delimiter possibly meant for this
[INFO] [stdout] 1215 |             cpu.sp = cpu.sp.wrapping_sub(2);
[INFO] [stdout] 1216 |             mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.wrapping_add(2);
[INFO] [stdout]      |                          - unclosed delimiter
[INFO] [stdout] ...
[INFO] [stdout] 1219 |         } else { cpu.pc += 2; }
[INFO] [stdout]      |         ^ mismatched closing delimiter
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:127:32
[INFO] [stdout]     |
[INFO] [stdout] 127 |         let hl = (cpu.h as u16 << 8) + cpu.l as u16;
[INFO] [stdout]     |                   ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                   |            |
[INFO] [stdout]     |                   |            not interpreted as shift
[INFO] [stdout]     |                   help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:128:32
[INFO] [stdout]     |
[INFO] [stdout] 128 |         let bc = (cpu.b as u16 << 8) + cpu.c as u16;
[INFO] [stdout]     |                   ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                   |            |
[INFO] [stdout]     |                   |            not interpreted as shift
[INFO] [stdout]     |                   help: try shifting the cast value: `(cpu.b as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected one of `:`, `;`, `=`, or `|`, found `hl`
[INFO] [stdout]    --> src/cpu.rs:129:20
[INFO] [stdout]     |
[INFO] [stdout] 129 |         let (i, b) hl.overflowing_add(bc);
[INFO] [stdout]     |                    ^^ expected one of `:`, `;`, `=`, or `|`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:140:37
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let address = (cpu.b as u16 << 8) + cpu.c as u16;
[INFO] [stdout]     |                        ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                        |            |
[INFO] [stdout]     |                        |            not interpreted as shift
[INFO] [stdout]     |                        help: try shifting the cast value: `(cpu.b as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:233:37
[INFO] [stdout]     |
[INFO] [stdout] 233 |         let hl: u16 = (cpu.h as u16 << 8) + cpu.l as u16;
[INFO] [stdout]     |                        ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                        |            |
[INFO] [stdout]     |                        |            not interpreted as shift
[INFO] [stdout]     |                        help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:234:37
[INFO] [stdout]     |
[INFO] [stdout] 234 |         let de: u16 = (cpu.d as u16 << 8) + cpu.e as u16;
[INFO] [stdout]     |                        ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                        |            |
[INFO] [stdout]     |                        |            not interpreted as shift
[INFO] [stdout]     |                        help: try shifting the cast value: `(cpu.d as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found `=`
[INFO] [stdout]    --> src/cpu.rs:271:32
[INFO] [stdout]     |
[INFO] [stdout] 271 |         let co = (cpu.a & 1 != = 0) as u8 0x10;
[INFO] [stdout]     |                                ^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected one of `!`, `(`, `.`, `::`, `;`, `<`, or `?`, found `0x10`
[INFO] [stdout]    --> src/cpu.rs:271:43
[INFO] [stdout]     |
[INFO] [stdout] 271 |         let co = (cpu.a & 1 != = 0) as u8 0x10;
[INFO] [stdout]     |                                           ^^^^ expected one of 7 possible tokens
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:294:45
[INFO] [stdout]     |
[INFO] [stdout] 294 |         let mut address: u16 =(cpu.h as u16 << 8) + cpu.l as u16;
[INFO] [stdout]     |                                ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                                |            |
[INFO] [stdout]     |                                |            not interpreted as shift
[INFO] [stdout]     |                                help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:334:37
[INFO] [stdout]     |
[INFO] [stdout] 334 |         let hl: u16 = (cpu.h as u16 << 8) + cpu.l as u16;
[INFO] [stdout]     |                        ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                        |            |
[INFO] [stdout]     |                        |            not interpreted as shift
[INFO] [stdout]     |                        help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:346:46
[INFO] [stdout]     |
[INFO] [stdout] 346 |         let mut address: u16 = (cpu.h as u16 << 8) + cpu.l as u16;
[INFO] [stdout]     |                                 ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                                 |            |
[INFO] [stdout]     |                                 |            not interpreted as shift
[INFO] [stdout]     |                                 help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `~` cannot be used as a unary operator
[INFO] [stdout]    --> src/cpu.rs:376:17
[INFO] [stdout]     |
[INFO] [stdout] 376 |         cpu.a = ~cpu.a;
[INFO] [stdout]     |                 ^ help: use `!` to perform bitwise not
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:398:32
[INFO] [stdout]     |
[INFO] [stdout] 398 |         let hl = (cpu.h as u16 << 8) + cpu.l as u16;
[INFO] [stdout]     |                   ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                   |            |
[INFO] [stdout]     |                   |            not interpreted as shift
[INFO] [stdout]     |                   help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:407:40
[INFO] [stdout]     |
[INFO] [stdout] 407 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:416:40
[INFO] [stdout]     |
[INFO] [stdout] 416 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:425:37
[INFO] [stdout]     |
[INFO] [stdout] 425 |         let address = (cpu.h as u16 << 8) + cpu.l as u16;
[INFO] [stdout]     |                        ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                        |            |
[INFO] [stdout]     |                        |            not interpreted as shift
[INFO] [stdout]     |                        help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:442:32
[INFO] [stdout]     |
[INFO] [stdout] 442 |         let hl = (cpu.h as u16 << 8) + cpu.l as u16;
[INFO] [stdout]     |                   ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                   |            |
[INFO] [stdout]     |                   |            not interpreted as shift
[INFO] [stdout]     |                   help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:450:41
[INFO] [stdout]     |
[INFO] [stdout] 450 |         let mut address = (cpu.h as u16 << 8) + cpu.l as u16;
[INFO] [stdout]     |                            ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                            |            |
[INFO] [stdout]     |                            |            not interpreted as shift
[INFO] [stdout]     |                            help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:485:40
[INFO] [stdout]     |
[INFO] [stdout] 485 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:498:40
[INFO] [stdout]     |
[INFO] [stdout] 498 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:513:40
[INFO] [stdout]     |
[INFO] [stdout] 513 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:526:40
[INFO] [stdout]     |
[INFO] [stdout] 526 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:541:40
[INFO] [stdout]     |
[INFO] [stdout] 541 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:554:40
[INFO] [stdout]     |
[INFO] [stdout] 554 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:563:40
[INFO] [stdout]     |
[INFO] [stdout] 563 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:569:40
[INFO] [stdout]     |
[INFO] [stdout] 569 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:575:40
[INFO] [stdout]     |
[INFO] [stdout] 575 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:581:40
[INFO] [stdout]     |
[INFO] [stdout] 581 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:587:40
[INFO] [stdout]     |
[INFO] [stdout] 587 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:593:40
[INFO] [stdout]     |
[INFO] [stdout] 593 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:600:40
[INFO] [stdout]     |
[INFO] [stdout] 600 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:612:40
[INFO] [stdout]     |
[INFO] [stdout] 612 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:669:37
[INFO] [stdout]     |
[INFO] [stdout] 669 |         let address = (cpu.h as u16 << 8) + cpu.l as u16;
[INFO] [stdout]     |                        ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                        |            |
[INFO] [stdout]     |                        |            not interpreted as shift
[INFO] [stdout]     |                        help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:740:40
[INFO] [stdout]     |
[INFO] [stdout] 740 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:811:40
[INFO] [stdout]     |
[INFO] [stdout] 811 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:881:40
[INFO] [stdout]     |
[INFO] [stdout] 881 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:940:40
[INFO] [stdout]     |
[INFO] [stdout] 940 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]    --> src/cpu.rs:989:40
[INFO] [stdout]     |
[INFO] [stdout] 989 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]     |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]     |                           |            |
[INFO] [stdout]     |                           |            not interpreted as shift
[INFO] [stdout]     |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]     --> src/cpu.rs:1036:40
[INFO] [stdout]      |
[INFO] [stdout] 1036 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]      |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]      |                           |            |
[INFO] [stdout]      |                           |            not interpreted as shift
[INFO] [stdout]      |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]     --> src/cpu.rs:1091:40
[INFO] [stdout]      |
[INFO] [stdout] 1091 |         let mut address = cpu.h as u16 << 8;
[INFO] [stdout]      |                           ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]      |                           |            |
[INFO] [stdout]      |                           |            not interpreted as shift
[INFO] [stdout]      |                           help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]     --> src/cpu.rs:1144:35
[INFO] [stdout]      |
[INFO] [stdout] 1144 |         let value = (cpu.b as u16 << 8) + (cpu.c as u16);
[INFO] [stdout]      |                      ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]      |                      |            |
[INFO] [stdout]      |                      |            not interpreted as shift
[INFO] [stdout]      |                      help: try shifting the cast value: `(cpu.b as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected type, found `{`
[INFO] [stdout]     --> src/cpu.rs:1189:27
[INFO] [stdout]      |
[INFO] [stdout] 1189 |                 |c, i| -> { if c.b & (1 << i) == 0 { c.f |= ZERO_FLAG; } cpu.last_m = 2; cpu.last_t = 8; },
[INFO] [stdout]      |                           ^ expected type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]     --> src/cpu.rs:1269:35
[INFO] [stdout]      |
[INFO] [stdout] 1269 |         let value = (cpu.d as u16 << 8) + (cpu.e as u16);
[INFO] [stdout]      |                      ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]      |                      |            |
[INFO] [stdout]      |                      |            not interpreted as shift
[INFO] [stdout]      |                      help: try shifting the cast value: `(cpu.d as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]     --> src/cpu.rs:1342:35
[INFO] [stdout]      |
[INFO] [stdout] 1342 |         let value = (cpu.h as u16 << 8) + (cpu.l as u16);
[INFO] [stdout]      |                      ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]      |                      |            |
[INFO] [stdout]      |                      |            not interpreted as shift
[INFO] [stdout]      |                      help: try shifting the cast value: `(cpu.h as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `<` is interpreted as a start of generic arguments for `u16`, not a shift
[INFO] [stdout]     --> src/cpu.rs:1387:35
[INFO] [stdout]      |
[INFO] [stdout] 1387 |         let value = (cpu.a as u16 << 8) + (cpu.f as u16);
[INFO] [stdout]      |                      ------------ ^^ - interpreted as generic arguments
[INFO] [stdout]      |                      |            |
[INFO] [stdout]      |                      |            not interpreted as shift
[INFO] [stdout]      |                      help: try shifting the cast value: `(cpu.a as u16)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: no rules expected the token `;`
[INFO] [stdout]     --> src/cpu.rs:1216:74
[INFO] [stdout]      |
[INFO] [stdout] 1216 |             mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.wrapping_add(2);
[INFO] [stdout]      |                                                                          ^ no rules expected this token in macro call
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/mmu.rs:32:1
[INFO] [stdout]      |
[INFO] [stdout] 32   | macro_rules! mem_access_w {
[INFO] [stdout]      | ------------------------- when calling this macro
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/mmu.rs:86:30
[INFO] [stdout]    |
[INFO] [stdout] 86 |         let mut value: u16 = (self.mem[address] as u16);
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: missing type for `static` item
[INFO] [stdout]   --> src/cpu.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | static undefined = |x: u16| { panic!("Hit undefined instruction at {:?}", stringify!(x - 1)); };
[INFO] [stdout]    |        ^^^^^^^^^ help: provide a type for the item: `undefined: [closure@src/cpu.rs:75:20: 75:96]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:123:40
[INFO] [stdout]     |
[INFO] [stdout] 123 |         mem_access_w!(cpu.memory_unit, address, cpu.sp);
[INFO] [stdout]     |                                        ^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected `usize`, found `u16`
[INFO] [stdout]     |                                        help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:123:49
[INFO] [stdout]     |
[INFO] [stdout] 123 |         mem_access_w!(cpu.memory_unit, address, cpu.sp);
[INFO] [stdout]     |                                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]     |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]     |
[INFO] [stdout] 123 |         mem_access_w!(cpu.memory_unit, address, cpu.sp.try_into().unwrap());
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:141:48
[INFO] [stdout]     |
[INFO] [stdout] 141 |         cpu.a = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                ^^^^^^^
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                expected `usize`, found `u16`
[INFO] [stdout]     |                                                help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `wrapping_add` found for mutable reference `&mut Z80` in the current scope
[INFO] [stdout]    --> src/cpu.rs:149:21
[INFO] [stdout]     |
[INFO] [stdout] 149 |         cpu.c = cpu.wrapping_add(1);
[INFO] [stdout]     |                     ^^^^^^^^^^^^ method not found in `&mut Z80`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:180:22
[INFO] [stdout]     |
[INFO] [stdout] 180 |             cpu.pc = (cpu.pc as i16).wrapping_add(offset as i16) as u16;
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `usize`, found `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:229:18
[INFO] [stdout]     |
[INFO] [stdout] 229 |         cpu.pc = (cpu.pc as i16 + (offset as i8) as i16) as u16;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `usize`, found `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:283:22
[INFO] [stdout]     |
[INFO] [stdout] 283 |             cpu.pc = (cpu.pc as i16 + offset as i16) as u16;
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `usize`, found `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:295:40
[INFO] [stdout]     |
[INFO] [stdout] 295 |         mem_access_b!(cpu.memory_unit, address, cpu.a);
[INFO] [stdout]     |                                        ^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected `usize`, found `u16`
[INFO] [stdout]     |                                        help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:323:33
[INFO] [stdout]     |
[INFO] [stdout] 323 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]     |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]     |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]     |
[INFO] [stdout] 323 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:329:22
[INFO] [stdout]     |
[INFO] [stdout] 329 |             cpu.pc = (cpu.pc as i16 + offset as i16) as u16;
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `usize`, found `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:347:48
[INFO] [stdout]     |
[INFO] [stdout] 347 |         cpu.a = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                ^^^^^^^
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                expected `usize`, found `u16`
[INFO] [stdout]     |                                                help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:388:22
[INFO] [stdout]     |
[INFO] [stdout] 388 |             cpu.pc = (cpu.pc as i16 + offset as i16) as u16;
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `usize`, found `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]    --> src/mmu.rs:38:24
[INFO] [stdout]     |
[INFO] [stdout] 36  | /         match result {
[INFO] [stdout] 37  | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38  | |             Some(r) => r
[INFO] [stdout]     | |                        ^
[INFO] [stdout]     | |                        |
[INFO] [stdout]     | |                        expected `usize`, found `u16`
[INFO] [stdout]     | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39  | |         }
[INFO] [stdout]     | |_________- `match` arms have incompatible types
[INFO] [stdout]     | 
[INFO] [stdout]    ::: src/cpu.rs:393:18
[INFO] [stdout]     |
[INFO] [stdout] 393 |           cpu.sp = mem_access_w!(cpu.memory_unit, cpu.pc);
[INFO] [stdout]     |                    --------------------------------------
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    this is found to be of type `usize`
[INFO] [stdout]     |                    in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:399:40
[INFO] [stdout]     |
[INFO] [stdout] 399 |         mem_access_b!(cpu.memory_unit, hl, cpu.a);
[INFO] [stdout]     |                                        ^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected `usize`, found `u16`
[INFO] [stdout]     |                                        help: you can convert a `u16` to a `usize`: `hl.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:409:50
[INFO] [stdout]     |
[INFO] [stdout] 409 |         let val = mem_access_b!(cpu.memory_unit, address).wrapping_add(1);
[INFO] [stdout]     |                                                  ^^^^^^^
[INFO] [stdout]     |                                                  |
[INFO] [stdout]     |                                                  expected `usize`, found `u16`
[INFO] [stdout]     |                                                  help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:410:40
[INFO] [stdout]     |
[INFO] [stdout] 410 |         mem_access_b!(cpu.memory_unit, address, val);
[INFO] [stdout]     |                                        ^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected `usize`, found `u16`
[INFO] [stdout]     |                                        help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:418:50
[INFO] [stdout]     |
[INFO] [stdout] 418 |         let val = mem_access_b!(cpu.memory_unit, address).wrapping_sub(1);
[INFO] [stdout]     |                                                  ^^^^^^^
[INFO] [stdout]     |                                                  |
[INFO] [stdout]     |                                                  expected `usize`, found `u16`
[INFO] [stdout]     |                                                  help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:419:40
[INFO] [stdout]     |
[INFO] [stdout] 419 |         mem_access_b!(cpu.memory_unit, address, val);
[INFO] [stdout]     |                                        ^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected `usize`, found `u16`
[INFO] [stdout]     |                                        help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:427:40
[INFO] [stdout]     |
[INFO] [stdout] 427 |         mem_access_b!(cpu.memory_unit, address, val);
[INFO] [stdout]     |                                        ^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected `usize`, found `u16`
[INFO] [stdout]     |                                        help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:437:22
[INFO] [stdout]     |
[INFO] [stdout] 437 |             cpu.pc = (cpu.pc as i16 + offset as i16) as u16;
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `usize`, found `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:443:41
[INFO] [stdout]     |
[INFO] [stdout] 443 |         let (i, b) = hl.overflowing_add(cpu.sp);
[INFO] [stdout]     |                                         ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]     |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]     |
[INFO] [stdout] 443 |         let (i, b) = hl.overflowing_add(cpu.sp.try_into().unwrap());
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:451:48
[INFO] [stdout]     |
[INFO] [stdout] 451 |         cpu.a = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                ^^^^^^^
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                expected `usize`, found `u16`
[INFO] [stdout]     |                                                help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:487:48
[INFO] [stdout]     |
[INFO] [stdout] 487 |         cpu.b = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                ^^^^^^^
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                expected `usize`, found `u16`
[INFO] [stdout]     |                                                help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:500:48
[INFO] [stdout]     |
[INFO] [stdout] 500 |         cpu.c = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                ^^^^^^^
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                expected `usize`, found `u16`
[INFO] [stdout]     |                                                help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:515:48
[INFO] [stdout]     |
[INFO] [stdout] 515 |         cpu.d = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                ^^^^^^^
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                expected `usize`, found `u16`
[INFO] [stdout]     |                                                help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:528:48
[INFO] [stdout]     |
[INFO] [stdout] 528 |         cpu.e = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                ^^^^^^^
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                expected `usize`, found `u16`
[INFO] [stdout]     |                                                help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:543:48
[INFO] [stdout]     |
[INFO] [stdout] 543 |         cpu.h = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                ^^^^^^^
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                expected `usize`, found `u16`
[INFO] [stdout]     |                                                help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:556:48
[INFO] [stdout]     |
[INFO] [stdout] 556 |         cpu.h = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                ^^^^^^^
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                expected `usize`, found `u16`
[INFO] [stdout]     |                                                help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:565:40
[INFO] [stdout]     |
[INFO] [stdout] 565 |         mem_access_b!(cpu.memory_unit, address, cpu.b);
[INFO] [stdout]     |                                        ^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected `usize`, found `u16`
[INFO] [stdout]     |                                        help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:571:40
[INFO] [stdout]     |
[INFO] [stdout] 571 |         mem_access_b!(cpu.memory_unit, address, cpu.c);
[INFO] [stdout]     |                                        ^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected `usize`, found `u16`
[INFO] [stdout]     |                                        help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:577:40
[INFO] [stdout]     |
[INFO] [stdout] 577 |         mem_access_b!(cpu.memory_unit, address, cpu.d);
[INFO] [stdout]     |                                        ^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected `usize`, found `u16`
[INFO] [stdout]     |                                        help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:583:40
[INFO] [stdout]     |
[INFO] [stdout] 583 |         mem_access_b!(cpu.memory_unit, address, cpu.e);
[INFO] [stdout]     |                                        ^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected `usize`, found `u16`
[INFO] [stdout]     |                                        help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:589:40
[INFO] [stdout]     |
[INFO] [stdout] 589 |         mem_access_b!(cpu.memory_unit, address, cpu.h);
[INFO] [stdout]     |                                        ^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected `usize`, found `u16`
[INFO] [stdout]     |                                        help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:595:40
[INFO] [stdout]     |
[INFO] [stdout] 595 |         mem_access_b!(cpu.memory_unit, address, cpu.l);
[INFO] [stdout]     |                                        ^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected `usize`, found `u16`
[INFO] [stdout]     |                                        help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:602:40
[INFO] [stdout]     |
[INFO] [stdout] 602 |         mem_access_b!(cpu.memory_unit, address, cpu.a);
[INFO] [stdout]     |                                        ^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected `usize`, found `u16`
[INFO] [stdout]     |                                        help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:614:48
[INFO] [stdout]     |
[INFO] [stdout] 614 |         cpu.a = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                ^^^^^^^
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                expected `usize`, found `u16`
[INFO] [stdout]     |                                                help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:670:77
[INFO] [stdout]     |
[INFO] [stdout] 670 |         let (val, b) = cpu.a.overflowing_add(mem_access_b!(cpu.memory_unit, address));
[INFO] [stdout]     |                                                                             ^^^^^^^
[INFO] [stdout]     |                                                                             |
[INFO] [stdout]     |                                                                             expected `usize`, found `u16`
[INFO] [stdout]     |                                                                             help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `overfowing_add` found for type `u8` in the current scope
[INFO] [stdout]    --> src/cpu.rs:678:30
[INFO] [stdout]     |
[INFO] [stdout] 678 |         let (val, b) = cpu.a.overfowing_add(cpu.a);
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^ help: there is an associated function with a similar name: `overflowing_add`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:742:48
[INFO] [stdout]     |
[INFO] [stdout] 742 |         let i = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                ^^^^^^^
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                expected `usize`, found `u16`
[INFO] [stdout]     |                                                help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:813:50
[INFO] [stdout]     |
[INFO] [stdout] 813 |         let val = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                  ^^^^^^^
[INFO] [stdout]     |                                                  |
[INFO] [stdout]     |                                                  expected `usize`, found `u16`
[INFO] [stdout]     |                                                  help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:883:48
[INFO] [stdout]     |
[INFO] [stdout] 883 |         let i = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                ^^^^^^^
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                expected `usize`, found `u16`
[INFO] [stdout]     |                                                help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:942:49
[INFO] [stdout]     |
[INFO] [stdout] 942 |         cpu.a &= mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                 ^^^^^^^
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 expected `usize`, found `u16`
[INFO] [stdout]     |                                                 help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0600]: cannot apply unary operator `-` to type `u8`
[INFO] [stdout]    --> src/cpu.rs:961:32
[INFO] [stdout]     |
[INFO] [stdout] 961 |         if cpu.a == 0 { cpu.f |- ZERO_FLAG; }
[INFO] [stdout]     |                                ^^^^^^^^^^^ cannot apply unary operator `-`
[INFO] [stdout]     |
[INFO] [stdout]     = note: unsigned values cannot be negated
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/cpu.rs:991:49
[INFO] [stdout]     |
[INFO] [stdout] 991 |         cpu.a ^= mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]     |                                                 ^^^^^^^
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 expected `usize`, found `u16`
[INFO] [stdout]     |                                                 help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1038:49
[INFO] [stdout]      |
[INFO] [stdout] 1038 |         cpu.a |= mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]      |                                                 ^^^^^^^
[INFO] [stdout]      |                                                 |
[INFO] [stdout]      |                                                 expected `usize`, found `u16`
[INFO] [stdout]      |                                                 help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1093:50
[INFO] [stdout]      |
[INFO] [stdout] 1093 |         let val = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]      |                                                  ^^^^^^^
[INFO] [stdout]      |                                                  |
[INFO] [stdout]      |                                                  expected `usize`, found `u16`
[INFO] [stdout]      |                                                  help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1110:22
[INFO] [stdout]      |
[INFO] [stdout] 1110 |               cpu.pc = mem_access_w!(cpu.memory_unit, cpu.sp);
[INFO] [stdout]      |                        --------------------------------------
[INFO] [stdout]      |                        |
[INFO] [stdout]      |                        this is found to be of type `usize`
[INFO] [stdout]      |                        in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1118:17
[INFO] [stdout]      |
[INFO] [stdout] 1118 |         cpu.b = value >> 8 as u8;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^ expected `u8`, found `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1119:25
[INFO] [stdout]      |
[INFO] [stdout] 1119 |         cpu.c = value & 0xff as u8;
[INFO] [stdout]      |                         ^^^^^^^^^^ expected `u16`, found `u8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1119:17
[INFO] [stdout]      |
[INFO] [stdout] 1119 |         cpu.c = value & 0xff as u8;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^ expected `u8`, found `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: no implementation for `u16 & u8`
[INFO] [stdout]     --> src/cpu.rs:1119:23
[INFO] [stdout]      |
[INFO] [stdout] 1119 |         cpu.c = value & 0xff as u8;
[INFO] [stdout]      |                       ^ no implementation for `u16 & u8`
[INFO] [stdout]      |
[INFO] [stdout]      = help: the trait `BitAnd<u8>` is not implemented for `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1125:22
[INFO] [stdout]      |
[INFO] [stdout] 1125 |               cpu.pc = mem_access_w!(cpu.memory_unit, cpu.pc);
[INFO] [stdout]      |                        --------------------------------------
[INFO] [stdout]      |                        |
[INFO] [stdout]      |                        this is found to be of type `usize`
[INFO] [stdout]      |                        in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1130:18
[INFO] [stdout]      |
[INFO] [stdout] 1130 |           cpu.pc = mem_access_w!(cpu.memory_unit, cpu.pc);
[INFO] [stdout]      |                    --------------------------------------
[INFO] [stdout]      |                    |
[INFO] [stdout]      |                    this is found to be of type `usize`
[INFO] [stdout]      |                    in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1137:52
[INFO] [stdout]      |
[INFO] [stdout] 1137 |             mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.wrapping_add(2));
[INFO] [stdout]      |                                                    ^^^^^^^^^^^^^^^^^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1137 |             mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.wrapping_add(2).try_into().unwrap());
[INFO] [stdout]      |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1138:22
[INFO] [stdout]      |
[INFO] [stdout] 1138 |               cpu.pc = mem_access_w!(cpu.memory_unit, cpu.pc);
[INFO] [stdout]      |                        --------------------------------------
[INFO] [stdout]      |                        |
[INFO] [stdout]      |                        this is found to be of type `usize`
[INFO] [stdout]      |                        in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1159:48
[INFO] [stdout]      |
[INFO] [stdout] 1159 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc);
[INFO] [stdout]      |                                                ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1159 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.try_into().unwrap());
[INFO] [stdout]      |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1166:22
[INFO] [stdout]      |
[INFO] [stdout] 1166 |               cpu.pc = mem_access_w!(cpu.memory_unit, cpu.sp);
[INFO] [stdout]      |                        --------------------------------------
[INFO] [stdout]      |                        |
[INFO] [stdout]      |                        this is found to be of type `usize`
[INFO] [stdout]      |                        in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1172:18
[INFO] [stdout]      |
[INFO] [stdout] 1172 |           cpu.pc = mem_access_w!(cpu.memory_unit, cpu.sp); cpu.sp += 2;
[INFO] [stdout]      |                    --------------------------------------
[INFO] [stdout]      |                    |
[INFO] [stdout]      |                    this is found to be of type `usize`
[INFO] [stdout]      |                    in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1178:22
[INFO] [stdout]      |
[INFO] [stdout] 1178 |               cpu.pc = mem_access_w!(cpu.memory_unit, cpu.pc);
[INFO] [stdout]      |                        --------------------------------------
[INFO] [stdout]      |                        |
[INFO] [stdout]      |                        this is found to be of type `usize`
[INFO] [stdout]      |                        in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1209:23
[INFO] [stdout]      |
[INFO] [stdout] 1209 |             undefined(cpu.pc);
[INFO] [stdout]      |                       ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1209 |             undefined(cpu.pc.try_into().unwrap());
[INFO] [stdout]      |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1223:48
[INFO] [stdout]      |
[INFO] [stdout] 1223 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.wrapping_add(2));
[INFO] [stdout]      |                                                ^^^^^^^^^^^^^^^^^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1223 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.wrapping_add(2).try_into().unwrap());
[INFO] [stdout]      |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1224:18
[INFO] [stdout]      |
[INFO] [stdout] 1224 |           cpu.pc = mem_access_w!(cpu.memory_unit, cpu.pc);
[INFO] [stdout]      |                    --------------------------------------
[INFO] [stdout]      |                    |
[INFO] [stdout]      |                    this is found to be of type `usize`
[INFO] [stdout]      |                    in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1230:48
[INFO] [stdout]      |
[INFO] [stdout] 1230 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc);
[INFO] [stdout]      |                                                ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1230 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.try_into().unwrap());
[INFO] [stdout]      |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1239:22
[INFO] [stdout]      |
[INFO] [stdout] 1239 |               cpu.pc = mem_access_w!(cpu.memory_unit, cpu.sp);
[INFO] [stdout]      |                        --------------------------------------
[INFO] [stdout]      |                        |
[INFO] [stdout]      |                        this is found to be of type `usize`
[INFO] [stdout]      |                        in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1247:17
[INFO] [stdout]      |
[INFO] [stdout] 1247 |         cpu.d = value >> 8 as u8;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^ expected `u8`, found `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1248:25
[INFO] [stdout]      |
[INFO] [stdout] 1248 |         cpu.e = value & 0xff as u8;
[INFO] [stdout]      |                         ^^^^^^^^^^ expected `u16`, found `u8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1248:17
[INFO] [stdout]      |
[INFO] [stdout] 1248 |         cpu.e = value & 0xff as u8;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^ expected `u8`, found `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: no implementation for `u16 & u8`
[INFO] [stdout]     --> src/cpu.rs:1248:23
[INFO] [stdout]      |
[INFO] [stdout] 1248 |         cpu.e = value & 0xff as u8;
[INFO] [stdout]      |                       ^ no implementation for `u16 & u8`
[INFO] [stdout]      |
[INFO] [stdout]      = help: the trait `BitAnd<u8>` is not implemented for `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1254:22
[INFO] [stdout]      |
[INFO] [stdout] 1254 |               cpu.pc = mem_access_w!(cpu.memory_unit, cpu.pc);
[INFO] [stdout]      |                        --------------------------------------
[INFO] [stdout]      |                        |
[INFO] [stdout]      |                        this is found to be of type `usize`
[INFO] [stdout]      |                        in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1258:33
[INFO] [stdout]      |
[INFO] [stdout] 1258 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1258 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1262:22
[INFO] [stdout]      |
[INFO] [stdout] 1262 |               cpu.pc = mem_access_w!(cpu.memory_unit, cpu.sp);
[INFO] [stdout]      |                        --------------------------------------
[INFO] [stdout]      |                        |
[INFO] [stdout]      |                        this is found to be of type `usize`
[INFO] [stdout]      |                        in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1284:48
[INFO] [stdout]      |
[INFO] [stdout] 1284 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc);
[INFO] [stdout]      |                                                ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1284 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.try_into().unwrap());
[INFO] [stdout]      |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1291:22
[INFO] [stdout]      |
[INFO] [stdout] 1291 |               cpu.pc = mem_access_w!(cpu.memory_unit, cpu.sp);
[INFO] [stdout]      |                        --------------------------------------
[INFO] [stdout]      |                        |
[INFO] [stdout]      |                        this is found to be of type `usize`
[INFO] [stdout]      |                        in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1298:18
[INFO] [stdout]      |
[INFO] [stdout] 1298 |           cpu.pc = mem_access_w!(cpu.memory_unit, cpu.sp);
[INFO] [stdout]      |                    --------------------------------------
[INFO] [stdout]      |                    |
[INFO] [stdout]      |                    this is found to be of type `usize`
[INFO] [stdout]      |                    in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1305:22
[INFO] [stdout]      |
[INFO] [stdout] 1305 |               cpu.pc = mem_access_w!(cpu.memory_unit, cpu.pc);
[INFO] [stdout]      |                        --------------------------------------
[INFO] [stdout]      |                        |
[INFO] [stdout]      |                        this is found to be of type `usize`
[INFO] [stdout]      |                        in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1309:33
[INFO] [stdout]      |
[INFO] [stdout] 1309 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1309 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1314:52
[INFO] [stdout]      |
[INFO] [stdout] 1314 |             mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.wrapping_add(2));
[INFO] [stdout]      |                                                    ^^^^^^^^^^^^^^^^^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1314 |             mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.wrapping_add(2).try_into().unwrap());
[INFO] [stdout]      |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `match` arms have incompatible types
[INFO] [stdout]     --> src/mmu.rs:38:24
[INFO] [stdout]      |
[INFO] [stdout] 36   | /         match result {
[INFO] [stdout] 37   | |             None => panic!("Failed memory access at {:?}", stringify!($address)),
[INFO] [stdout] 38   | |             Some(r) => r
[INFO] [stdout]      | |                        ^
[INFO] [stdout]      | |                        |
[INFO] [stdout]      | |                        expected `usize`, found `u16`
[INFO] [stdout]      | |                        help: you can convert a `u16` to a `usize`: `r.into()`
[INFO] [stdout] 39   | |         }
[INFO] [stdout]      | |_________- `match` arms have incompatible types
[INFO] [stdout]      | 
[INFO] [stdout]     ::: src/cpu.rs:1315:22
[INFO] [stdout]      |
[INFO] [stdout] 1315 |               cpu.pc = mem_access_w!(cpu.memory_unit, cpu.pc);
[INFO] [stdout]      |                        --------------------------------------
[INFO] [stdout]      |                        |
[INFO] [stdout]      |                        this is found to be of type `usize`
[INFO] [stdout]      |                        in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1319:33
[INFO] [stdout]      |
[INFO] [stdout] 1319 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1319 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1323:48
[INFO] [stdout]      |
[INFO] [stdout] 1323 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc);
[INFO] [stdout]      |                                                ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1323 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.try_into().unwrap());
[INFO] [stdout]      |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1333:17
[INFO] [stdout]      |
[INFO] [stdout] 1333 |         cpu.h = value >> 8 as u8;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^ expected `u8`, found `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1334:25
[INFO] [stdout]      |
[INFO] [stdout] 1334 |         cpu.l = value & 0xff as u8;
[INFO] [stdout]      |                         ^^^^^^^^^^ expected `u16`, found `u8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1334:17
[INFO] [stdout]      |
[INFO] [stdout] 1334 |         cpu.l = value & 0xff as u8;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^ expected `u8`, found `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: no implementation for `u16 & u8`
[INFO] [stdout]     --> src/cpu.rs:1334:23
[INFO] [stdout]      |
[INFO] [stdout] 1334 |         cpu.l = value & 0xff as u8;
[INFO] [stdout]      |                       ^ no implementation for `u16 & u8`
[INFO] [stdout]      |
[INFO] [stdout]      = help: the trait `BitAnd<u8>` is not implemented for `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1338:33
[INFO] [stdout]      |
[INFO] [stdout] 1338 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1338 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1339:33
[INFO] [stdout]      |
[INFO] [stdout] 1339 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1339 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1355:48
[INFO] [stdout]      |
[INFO] [stdout] 1355 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc);
[INFO] [stdout]      |                                                ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1355 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.try_into().unwrap());
[INFO] [stdout]      |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1362:33
[INFO] [stdout]      |
[INFO] [stdout] 1362 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1362 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1363:33
[INFO] [stdout]      |
[INFO] [stdout] 1363 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1363 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1364:33
[INFO] [stdout]      |
[INFO] [stdout] 1364 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1364 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1368:48
[INFO] [stdout]      |
[INFO] [stdout] 1368 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc);
[INFO] [stdout]      |                                                ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1368 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.try_into().unwrap());
[INFO] [stdout]      |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1378:17
[INFO] [stdout]      |
[INFO] [stdout] 1378 |         cpu.a = value >> 8 as u8;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^ expected `u8`, found `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1379:25
[INFO] [stdout]      |
[INFO] [stdout] 1379 |         cpu.f = value & 0xff as u8;
[INFO] [stdout]      |                         ^^^^^^^^^^ expected `u16`, found `u8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1379:17
[INFO] [stdout]      |
[INFO] [stdout] 1379 |         cpu.f = value & 0xff as u8;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^ expected `u8`, found `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: no implementation for `u16 & u8`
[INFO] [stdout]     --> src/cpu.rs:1379:23
[INFO] [stdout]      |
[INFO] [stdout] 1379 |         cpu.f = value & 0xff as u8;
[INFO] [stdout]      |                       ^ no implementation for `u16 & u8`
[INFO] [stdout]      |
[INFO] [stdout]      = help: the trait `BitAnd<u8>` is not implemented for `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1384:33
[INFO] [stdout]      |
[INFO] [stdout] 1384 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1384 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1400:48
[INFO] [stdout]      |
[INFO] [stdout] 1400 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc);
[INFO] [stdout]      |                                                ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1400 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.try_into().unwrap());
[INFO] [stdout]      |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1405:33
[INFO] [stdout]      |
[INFO] [stdout] 1405 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1405 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1408:48
[INFO] [stdout]      |
[INFO] [stdout] 1408 |         cpu.a = mem_access_b!(cpu.memory_unit, address);
[INFO] [stdout]      |                                                ^^^^^^^
[INFO] [stdout]      |                                                |
[INFO] [stdout]      |                                                expected `usize`, found `u16`
[INFO] [stdout]      |                                                help: you can convert a `u16` to a `usize`: `address.into()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1413:33
[INFO] [stdout]      |
[INFO] [stdout] 1413 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1413 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1414:33
[INFO] [stdout]      |
[INFO] [stdout] 1414 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1414 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1426:48
[INFO] [stdout]      |
[INFO] [stdout] 1426 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc);
[INFO] [stdout]      |                                                ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1426 |         mem_access_w!(cpu.memory_unit, cpu.sp, cpu.pc.try_into().unwrap());
[INFO] [stdout]      |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1477:33
[INFO] [stdout]      |
[INFO] [stdout] 1477 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1477 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1485:33
[INFO] [stdout]      |
[INFO] [stdout] 1485 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1485 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1495:33
[INFO] [stdout]      |
[INFO] [stdout] 1495 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1495 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1503:33
[INFO] [stdout]      |
[INFO] [stdout] 1503 |     |cpu: &mut Z80| { undefined(cpu.pc); },
[INFO] [stdout]      |                                 ^^^^^^ expected `u16`, found `usize`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert a `usize` to a `u16` and panic if the converted value doesn't fit
[INFO] [stdout]      |
[INFO] [stdout] 1503 |     |cpu: &mut Z80| { undefined(cpu.pc.try_into().unwrap()); },
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/cpu.rs:1432:41
[INFO] [stdout]      |
[INFO] [stdout] 1432 |   static map_table: [fn(&mut Z80); 128] = [
[INFO] [stdout]      |  _________________________________________^
[INFO] [stdout] 1433 | |
[INFO] [stdout] 1434 | |     //00
[INFO] [stdout] 1435 | |     |cpu: &mut Z80| {}, //RLCr_b
[INFO] [stdout] ...    |
[INFO] [stdout] 1504 | |     |cpu: &mut Z80| {} //SRLr_a
[INFO] [stdout] 1505 | | ];
[INFO] [stdout]      | |_^ expected an array with a fixed size of 128 elements, found one with 64 elements
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected array `[for<'r> fn(&'r mut Z80); 128]`
[INFO] [stdout]                 found array `[for<'r> fn(&'r mut Z80); 64]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 155 previous errors; 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0308, E0599, E0600.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `gb_emulator`
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] running `Command { std: "docker" "inspect" "56d6d0baea53ba6956119de36385dbf53b4f8962095ead4c03a666ab4713bca3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "56d6d0baea53ba6956119de36385dbf53b4f8962095ead4c03a666ab4713bca3", kill_on_drop: false }`
[INFO] [stdout] 56d6d0baea53ba6956119de36385dbf53b4f8962095ead4c03a666ab4713bca3
